package com.atguigu.spring5.testdemo;/*
@author joker
@create 2022-03-15 22:52
untitled
*/

import com.atguigu.spring5.Book;
import com.atguigu.spring5.User;
import com.atguigu.spring5.orders;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.annotation.Order;

public class TestSpring5 {
    @Test
    public void testAddres() {
        //1. 加载spring的配置文件
        Object object;
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");
        //2. 获取配置创建的对象
        User user = context.getBean("user", User.class);
        System.out.println(user);
        user.add();
    }

    /*Spring提供IOC容器实现两种方式:(两个接口)
     * (1) BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,开发时一般不用
     * 加载配置文件的时候不会创建对象,在获取对象(使用)的时候才会去创建对象
     * (2) ApplicationContext:BeanFactory接口的子接口,提供更多强大的功能,开发中一般使用这个,
     * 加载配置文件的时候就会把配置文件对象进行创建
     *
     * Bean管理:两个操作
     * 创建对象,属性注入
     *
     * Bean管理实现:
     * 1. 基于xml配置文件方式实现
     * 2. 基于注解方式实现
     *
     * 基于xml方式注入属性
     * (1) DI:依赖注入,就是注入属性,是IOC的具体实现*/
    @Test
    public void testBook() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        Book book = context.getBean("book", Book.class);
        System.out.println(book.toString());
    }

    @Test
    public void testOders() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        orders ap = context.getBean("orders", orders.class);
        ap.ordersTest();
    }

    /*5. p名称空间注入
    * (1) 使用p名称空间注入,可以简化基于xml配置方式*/
}
